package smartlifev30.com.sdk.api.gateway_app;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import java.util.List;

import smartlifev30.com.sdk.api.CallBack;
import smartlifev30.com.sdk.bean.response.LoginGatewayResponse;
import smartlifev30.com.sdk.bean.response.LoginResponse;


/**
 * Created by tys on 2018/8/13.
 */

public interface IUserMgmtGateway {

    /**
     * 用户登录到网关
     *
     * @param userName
     * @param token    首次通过用户名和密码登录时，网关端会返回一个token给app，app第二次登录时使用该token直接登录。
     * @param sn
     * @param callBack
     */
    void loginGatewayByToken(@NonNull String userName, @NonNull String token, @NonNull String sn,
                             @NonNull CallBack<LoginGatewayResponse> callBack);

    /**
     * 用户登录到网关
     *
     * @param userName
     * @param pwd
     * @param sn
     * @param callBack
     */
    void loginGatewayByPwd(@NonNull String userName, @NonNull String pwd, @NonNull String sn,
                           @NonNull CallBack<LoginGatewayResponse> callBack);

    /**
     * 查询用户权限 (该接口供主用户调用)
     *
     * @param userName
     * @param token
     * @param sn
     * @param phoneNum 被查询者
     * @param callBack
     */
    void getUserPermission(@NonNull String userName, @NonNull String token, @NonNull String sn, @NonNull String phoneNum,
                           @NonNull CallBack<LoginResponse> callBack);

    /**
     * 设置用户的控制权限(该接口供主用户调用)
     *
     * @param userName
     * @param token
     * @param sn
     * @param phoneNum
     * @param permission  0:代表不打开权限，1：代表打开权限,当为0时，无device_list
     * @param deviceList  设备id
     * @param callBack
     */
    void setUserPermission(@NonNull String userName, @NonNull String token, @NonNull String sn, @NonNull String phoneNum,
                           @NonNull Integer permission, @Nullable List<Integer> deviceList, @NonNull CallBack<LoginResponse> callBack);

    /**
     * 查询单个/所有用户的信息
     * @param userName
     * @param token
     * @param sn
     * @param phoneNum 数组长度为0时表示查询所有用户
     */
    void usrQuery(@NonNull String userName, @NonNull String token, @NonNull String sn, @Nullable List<String> phoneNum,
                  @NonNull CallBack<LoginResponse> callBack);



}
